Multimedia content streaming, such as the streaming of audio, video, and/or text media content is becoming increasingly popular. The term “streaming” is typically used to indicate that the data representing the media is provided over a network to a client computer and the client computer renders the streaming content as it is received from a network server, rather than waiting for an entire content “file” to be delivered.
The popularity of multimedia presentations has driven the development of various multimedia data formats and the development of multimedia players needed for playing the various data formats. Multimedia players executing on client computers typically process multimedia data through a series of steps that include reading a data file, parsing the data into separate data streams (e.g., a video stream and audio stream), decoding each data stream, and rendering the data streams for presentation (e.g., on a video display or audio speaker). Each of the steps is performed by a software component called a “filter”.
One method used for processing the increasing number of multimedia data formats is to combine different filters into a filter graph that includes a chain or chains of filters. For example, once the data format of a desired data stream is determined, a graph can be constructed by selecting a set of filters that is appropriate for processing the data stream. The filters selected for the filter graph would each be compatible with the media type of the data stream and would generally include a file reader for reading multimedia data from a source, a demultiplexer or parser for separating multiplexed data, a decoder for decoding encoded data, and a renderer to display or “sound” the data. Each of these filters would then be combined within the architecture of a filter graph to efficiently process the multimedia data.
Currently available multimedia players, such as Windows Media Player developed by Microsoft Corporation of Redmond, Wash., permit third party vendors to develop software plug-ins (i.e., filters) for installation in the players that modify or process audio and video data before it is rendered by the players. Plug-ins that modify/process data that is in a format already known to the media player are often called DSP (digital signal processing) plug-ins or transform plug-ins. Thus, a user can purchase and download an audio or video plug-in from a Web site and install and configure the plug-in in a media player to create a desired effect when listening to music or watching a video. Examples of audio effects that might be created by an audio plug-in may include a surround-sound effect, an intensification of a particular frequency range such as causing a larger base response, an echo effect, and so on.
Another type of plug-in that is available for certain media players is called a rendering plug-in. Rendering plug-ins can be installed in a media player to allow the media player to render new media types (e.g., custom audio, video, animation) whose formats are not natively known to the media player. Thus, a third party vendor can create a rendering plug-in to enable their own custom media data type to be streamed from a content server and played in a player via their plug-in. An example of a new media type that may not be natively supported by a media player might be streaming stock ticker data in a text format. A vendor could develop a rendering plug-in to be installed and loaded into a media player that enables the streaming stock ticker data to appear in one area of a video display, while other video data being processed by the player appears in the rest of the video display.
Although such plug-ins can provide versatility in the types and processing options of multimedia for some media players, they have various disadvantages in the way they are currently used in media players. One disadvantage with the way media players use plug-ins is that they require a user to interrupt media presentations before the plug-ins can be enabled (i.e., available for use). The reason, in general, is that a filter graph constructed for a currently running media presentation must be torn apart and reconstructed with a newly installed plug-in filter before the plug-in can be used. This deconstruction and reconstruction requires that a user stop the current media presentation, selectively load the newly installed plug-in, restart the media presentation from the beginning, and attempt to find the location in the media presentation where the playback was interrupted. As an example, a user may come across a desirable plug-in while surfing the Internet and watching a favorite music video through a media player. Typically, the user could purchase the plug-in, download it, and install it on the computer in a matter of moments. However, in order to load the plug-in into the media player and use it, the media player must be stopped and the media experience interrupted. After loading the plug-in, the media must be restarted. If the user wants to find the location where the player left off playing the media, the user must search through the media “manually”.
Another disadvantage with the way media players use plug-ins is that they do not require that the plug-ins be exclusively registered with the player. This creates problems for third party vendors who develop and sell plug-ins for use in specific media players. Without an exclusive registration, plug-ins sold to users with the intent that the plug-ins be used on a particular type of media player can easily be pirated for use on other types of media players.
Accordingly, a need exists for ways to overcome current problems with registering and loading media player plug-ins.